#ifndef TIEC_UTIL_H
#define TIEC_UTIL_H

#include "macro.h"
#include "data.h"
#include <codecvt>
#include <locale>

namespace NS_TIEC {

  class TimeUtil {
  public:
    /// 获取当前毫秒时间戳
    /// \return 毫秒时间戳
    static Int64 milliTime();

    /// 获取当前微秒时间戳
    /// \return 微秒时间戳
    static Int64 microTime();

    /// 获取当前纳秒时间戳
    /// \return 纳秒时间戳
    static Int64 nanoTime();
  };

  /// String转换为WString
  /// \param s String内容
  /// \return
  WString toWString(const String& s);

  /// 字节集转换为WString
  /// \param bytes 字节集
  /// \return
  WString toWString(const ByteArray& bytes);

  /// WString转换为String
  /// \param s WString内容
  /// \return
  String toString(const WString& ws);

  /// 字节集转换为String
  /// \param bytes 字节集
  /// \return
  String toString(const ByteArray& bytes);

  /// 整数转换为String
  /// \param n 整数
  /// \return
  String toString(Int64 n);

  /// float转换为String
  /// \param n 整数
  /// \return
  String toString(float n);

  /// double转换为String
  /// \param n 整数
  /// \return
  String toString(double n);

  /// String转int32
  /// \param s 字符串
  /// \return
  Int32 toInt32(const String& s);

  /// String转int64
  /// \param s 字符串
  /// \return
  Int64 toInt64(const String& s);

  /// 格式化字符串
  /// \param format 格式
  /// \param ... 替换参数
  /// \return 格式化之后的字符串
  const char* formatChars(const char* format, ...);

  /// 格式化字符串
  /// \param format 格式
  /// \param ... 替换参数
  /// \return 格式化之后的字符串
  String formatString(const char* format, ...);
}

#endif //TIEC_UTIL_H
